/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekemanrapatkerjaunit;

import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.common.ClassSession;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.sadhar.sipp.jenisrapatkerja.JenisRapatKerjaDAO;
import org.sadhar.sipp.jenisrapatkerja.JenisRapatKerjaDAOImpl;
import org.sadhar.sipp.perekamanrapatkerja.PerekamanRapatKerja;
import org.sadhar.sipp.perekamanrapatkerja.PerekamanRapatKerjaDAO;
import org.sadhar.sipp.perekamanrapatkerja.PerekamanRapatKerjaDAOImpl;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Space;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Toolbarbutton;

/**
 *
 * @author bloodrunk
 */
public class PerekamanRapatKerjaUnitWnd extends ClassApplicationModule {

    private Listbox lstboxDaftarRapatKerja;
    private Combobox cmbboxNamaRapatKerja;
    private Combobox cmbboxJenisRapatKerja;
    private Label lblTahunAnggaran;
    private Button btnSimpan;
    private Button btnBatal;
    private Textbox txtboxKodeRapatKerja;
    private Textbox txtboxKodeJenisRapatKerja;
    private PerekamanRapatKerjaUnitDAO perekamanRapatKerjaUnitDAO;
    private PerekamanRapatKerjaDAO perekamanRapatKerjaDAO;
    private JenisRapatKerjaDAO jenisRapatKerjaDAO;
    private Textbox txtboxKodeUnitKerja;
    private Textbox txtboxIsRencana;
    private ClassSession session;
    private Textbox txtboxId;

    public PerekamanRapatKerjaUnitWnd() {
        perekamanRapatKerjaUnitDAO = new PerekamanaRapatKerjaUnitDAOImpl();
        perekamanRapatKerjaDAO = new PerekamanRapatKerjaDAOImpl();
        jenisRapatKerjaDAO = new JenisRapatKerjaDAOImpl();
        session = new ClassSession("2009", "02001000");
    }

    public void onCreate() {
        lstboxDaftarRapatKerja = (Listbox) getFellow("lstboxDaftarRapatKerja");
        cmbboxNamaRapatKerja = (Combobox) getFellow("cmbboxNamaRapatKerja");
        cmbboxJenisRapatKerja = (Combobox) getFellow("cmbboxJenisRapatKerja");
        lblTahunAnggaran = (Label) getFellow("lblTahunAnggaran");
        btnBatal = (Button) getFellow("btnBatal");
        btnSimpan = (Button) getFellow("btnSimpan");
        txtboxKodeRapatKerja = (Textbox) getFellow("txtboxKodeRapatKerja");
        txtboxKodeJenisRapatKerja = (Textbox) getFellow("txtboxKodeJenisRapatKerja");
        txtboxKodeUnitKerja = (Textbox) getFellow("txtboxKodeUnitKerja");
        txtboxIsRencana = (Textbox) getFellow("txtboxIsRencana");
        lblTahunAnggaran.setValue(session.getThnAnggaran());
        txtboxId = (Textbox) getFellow("txtboxId");
        this.loadRapatKerjaUnit();
        this.loadNamaRapatKerja();
        this.loadJenisRapatKerja();
    }

    public void loadRapatKerjaUnit() {
        int no = 1;
        lstboxDaftarRapatKerja.getItems().clear();
        for (final Map map : perekamanRapatKerjaUnitDAO.getRapatKerjaByTahun(lblTahunAnggaran.getValue())) {
            Listitem item = new Listitem();
            item.setValue(map);
            item.appendChild(new Listcell("" + no++));
            item.appendChild(new Listcell(map.get("namaRapatKerja").toString()));
            item.appendChild(new Listcell(map.get("jenisRapatKerja").toString()));
            if (map.get("isRencana").toString().equalsIgnoreCase("N")) {
                item.appendChild(new Listcell("Diluar rencana"));
            } else {
                item.appendChild(new Listcell(""));
            }
            Listcell listcell = new Listcell();
            Toolbarbutton toolbarbtnUbah = new Toolbarbutton();
            toolbarbtnUbah.setLabel("[ubah]");
            toolbarbtnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    cmbboxNamaRapatKerja.setDisabled(false);
                    cmbboxJenisRapatKerja.setDisabled(false);
                    txtboxId.setValue(map.get("idRapatKerjaUnit").toString());
                    txtboxKodeUnitKerja.setValue(map.get("kodeUnit").toString());
                    txtboxKodeRapatKerja.setValue(map.get("kodeRapatKerja").toString());
                    txtboxKodeJenisRapatKerja.setValue(map.get("kodeJenisRapatKerja").toString());
                    cmbboxJenisRapatKerja.setValue(map.get("jenisRapatKerja").toString());
                    cmbboxNamaRapatKerja.setValue(map.get("namaRapatKerja").toString());
                    txtboxIsRencana.setValue(ClassAntiNull.AntiNullString(map.get("isRencana")));

                }
            });

            Toolbarbutton toolbarbtnHapus = new Toolbarbutton();
            toolbarbtnHapus.setLabel("[hapus]");
            toolbarbtnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    cmbboxNamaRapatKerja.setValue(map.get("namaRapatKerja").toString());
                    cmbboxJenisRapatKerja.setValue(map.get("jenisRapatKerja").toString());
                    if (Messagebox.show("Apakah data rapat kerja unit " + map.get("namaRapatKerja") +
                            " akan dihapus?", "Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                        PerekamanRapatKerjaUnit rapatKerjaUnit = new PerekamanRapatKerjaUnit();
                        txtboxId.setValue(map.get("idRapatKerjaUnit").toString());
                        try {
                            rapatKerjaUnit.setIdRapatKerjaUnit(Integer.parseInt(txtboxId.getValue()));
                            perekamanRapatKerjaUnitDAO.delete(rapatKerjaUnit);
                            Messagebox.show("Data telah dihapus", "Information", Messagebox.OK, Messagebox.INFORMATION);
                            loadRapatKerjaUnit();
                            clear();
                        } catch (Exception e) {
                            Messagebox.show("Gagal menghapus data " + e.getMessage(), "Error", Messagebox.OK, Messagebox.ERROR);
                        }
                    }
                }
            });

            listcell.appendChild(toolbarbtnUbah);
            listcell.appendChild(new Space());
            listcell.appendChild(toolbarbtnHapus);
            listcell.appendChild(new Space());
            item.appendChild(listcell);
            lstboxDaftarRapatKerja.appendChild(item);

        }
    }

    public void lstboxDaftarRapatKerja() {
        Map map = (Map) lstboxDaftarRapatKerja.getSelectedItem().getValue();
        cmbboxNamaRapatKerja.setValue(map.get("namaRapatKerja").toString());
        cmbboxJenisRapatKerja.setValue(map.get("jenisRapatKerja").toString());
        cmbboxNamaRapatKerja.setDisabled(true);
        cmbboxJenisRapatKerja.setDisabled(true);

    }

    public void loadNamaRapatKerja() {
        cmbboxNamaRapatKerja.getItems().clear();
        for (PerekamanRapatKerja rapatKerja : perekamanRapatKerjaDAO.list()) {
            Comboitem item = new Comboitem();
            item.setValue(rapatKerja);
            item.setLabel(rapatKerja.getNamaRapatKerja());
            cmbboxNamaRapatKerja.appendChild(item);
        }
    }

    public void loadJenisRapatKerja() {
        cmbboxJenisRapatKerja.getItems().clear();
        for (Map map : jenisRapatKerjaDAO.getAll()) {
            Comboitem item = new Comboitem();
            item.setValue(map);
            item.setLabel(map.get("jenisRapatKerja").toString());
            cmbboxJenisRapatKerja.appendChild(item);
        }
    }

    public void cmbboxNamaRapatKerjaOnSelect() {
        PerekamanRapatKerja rapatKerja = (PerekamanRapatKerja) cmbboxNamaRapatKerja.getSelectedItem().getValue();
        txtboxKodeRapatKerja.setValue(rapatKerja.getKodeRapatKerja() + "");
    }

    public void cmbboxJenisRapatKerjaOnSelect() {
        Map map = (Map) cmbboxJenisRapatKerja.getSelectedItem().getValue();
        txtboxKodeJenisRapatKerja.setValue(map.get("kodeJenisRapatKerja").toString());
    }

    public void btnSimpanOnClick() throws InterruptedException, Exception {
        if (cmbboxNamaRapatKerja.getValue().equals("") || cmbboxJenisRapatKerja.getValue().equals("") ||
                txtboxKodeJenisRapatKerja.getValue().equals("") || txtboxKodeRapatKerja.getValue().equals("")) {
            Messagebox.show("Data tidak lengkap", "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
        } else {
            if (txtboxId.getValue().equals("")) {
                PerekamanRapatKerjaUnit rapatKerjaUnit = new PerekamanRapatKerjaUnit();
                rapatKerjaUnit.setTahun(lblTahunAnggaran.getValue());
                rapatKerjaUnit.setKodeRapatKerja(Integer.parseInt(txtboxKodeRapatKerja.getValue()));
                rapatKerjaUnit.setKodeJenisRapatKerja(Integer.parseInt(txtboxKodeJenisRapatKerja.getValue()));
                rapatKerjaUnit.setKodeUnit(session.getKodeUnit());
                rapatKerjaUnit.setIsRencana("Y");

                Map m = perekamanRapatKerjaUnitDAO.getRapatKerjaUnit(rapatKerjaUnit.getTahun(),
                        rapatKerjaUnit.getKodeRapatKerja(), rapatKerjaUnit.getKodeJenisRapatKerja());
                if (m.size() <= 0) {
                    try {
                        perekamanRapatKerjaUnitDAO.insert(rapatKerjaUnit);
                        Messagebox.show("Data telah di simpan", "Informasi", Messagebox.OK, Messagebox.INFORMATION);
                        clear();
                        loadRapatKerjaUnit();
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                        Messagebox.show("Gagal menyimpan data " + e.getMessage(), "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
                    }
                } else {
                    Messagebox.show("Data telah ada", "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                PerekamanRapatKerjaUnit rapatKerjaUnit = new PerekamanRapatKerjaUnit();
                rapatKerjaUnit.setIdRapatKerjaUnit(Integer.parseInt(txtboxId.getValue()));
                rapatKerjaUnit.setKodeJenisRapatKerja(Integer.parseInt(txtboxKodeJenisRapatKerja.getValue()));
                rapatKerjaUnit.setKodeRapatKerja(Integer.parseInt(txtboxKodeRapatKerja.getValue()));
                rapatKerjaUnit.setKodeUnit(txtboxKodeUnitKerja.getValue());
                System.out.println(rapatKerjaUnit.getKodeJenisRapatKerja() + " " + rapatKerjaUnit.getKodeRapatKerja());
                Map m = perekamanRapatKerjaUnitDAO.getRapatKerjaUnit(lblTahunAnggaran.getValue(),
                        rapatKerjaUnit.getKodeRapatKerja(), rapatKerjaUnit.getKodeJenisRapatKerja());
                System.out.println(m.size() + " " + m.get("kodeRapatKerja"));
                if (m.size() <= 0) {
                    try {
                        perekamanRapatKerjaUnitDAO.update(rapatKerjaUnit);
                        Messagebox.show("Data telah di ubah", "Informasi", Messagebox.OK, Messagebox.INFORMATION);
                        clear();
                        loadRapatKerjaUnit();
                        cmbboxNamaRapatKerja.setDisabled(false);
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                        Messagebox.show("Gagal mengubah data " + e.getMessage(), "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
                    }
                } else {
                    Messagebox.show("Data telah ada", "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            }

        }



    }

    public void btnBatalOnClick() {
        clear();
    }

    public void clear() {
        txtboxId.setValue("");
        cmbboxJenisRapatKerja.setValue("");
        cmbboxNamaRapatKerja.setValue("");
        txtboxKodeRapatKerja.setValue("");
        txtboxKodeJenisRapatKerja.setValue("");
        txtboxKodeUnitKerja.setValue("");
    }
}
